home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <math.h>
- #include <string.h>
- #include <conio.h>
- #include <dos.h>
-
- static int month_arr [13] = {0,31,28,31,30,31,30,31,31,30,31,30,31};
-
- struct TIMEDATE {
- int year, month, day;
- };
-
- int valid_date(struct TIMEDATE chkdate);
- int main(int argc, char *argv[]);
- unsigned getdate(char *hdr);
-
- int valid_date(chkdate)
- struct TIMEDATE chkdate;
- {
- if (!(chkdate.year % 4))
- month_arr[2] = 29;
-
-
- if (chkdate.month < 1 || chkdate.month > 12)
- return(1);
- else
- if (chkdate.day < 1 || chkdate.day > month_arr[chkdate.month])
- return(1);
-
- return(0);
- }
-
- unsigned getdate(hdr)
- char *hdr;
- {
- int dateinv = 1;
- char datestr[12], *tempfld;
- struct TIMEDATE wkdate;
-
- while (dateinv)
- {
- printf("Enter date to delete %s (MM/DD/YY): ",hdr);
- gets(datestr);
- tempfld = strtok(datestr,"/");
- wkdate.month = atoi(tempfld);
- tempfld = strtok(NULL,"/");
- wkdate.day = atoi(tempfld);
- tempfld = strtok(NULL,"/");
- wkdate.year = atoi(tempfld);
- if (wkdate.year < 1980)
- wkdate.year += 1900;
- dateinv = valid_date(wkdate);
- if (dateinv)
- printf("\a");
- }
- return(wkdate.day + (wkdate.month << 5) +
- ((wkdate.year - 1980) << 9));
-
- }
-
- main(argc, argv)
- int argc;
- char *argv[];
- {
- unsigned datefrom_num, dateto_num;
-
- char *srchfor = "*.*",
- ch;
- struct find_t fileinfo;
- int filechk, del_fail;
-
- printf("(C)1986 Michael Roberts - NOTE: Dates entered are inclusive to deletion!\n");
- if (argc == 2)
- srchfor = argv[1];
- printf("\nDelete files matching - %s? ", srchfor);
-
- do ch = (char)getch();
- while (strchr("YyNn", ch) == NULL);
-
- if (ch == 'Y' || ch == 'y')
- {
- puts("YES");
- do
- {
- datefrom_num = getdate("FROM");
- dateto_num = getdate("TO");
-
- if (datefrom_num > dateto_num)
- printf("\n\aFrom Date is greater than To date - Re-enter\n");
- } while (datefrom_num > dateto_num);
-
- filechk = _dos_findfirst(srchfor, _A_NORMAL, &fileinfo);
-
- while(!filechk)
- {
- if ((fileinfo.wr_date >= datefrom_num) &&
- (fileinfo.wr_date <= dateto_num))
- {
- del_fail = unlink(fileinfo.name);
- if (!del_fail)
- printf("Deleted %s \n",fileinfo.name);
- else
- printf("Could not delete %s \n", fileinfo.name);
- }
- filechk = _dos_findnext(&fileinfo);
- }
- }
- else
- puts("NO");
-
- return(0);
- }